package com.ys.多线程.p8集合与多线程同步;

/**
 * 描述: P3多线程操作myArrayList实现同步Lock
 *   对: add 方法体内做:
 *
 *          也可以用Lock锁来实现
 *             int len = elementData.length;
 *             if (size >= len){
 *                 // 扩容  1+1/2 右移 除2的N次方
 *                 int newCap = len+(len>>1);
 *                 // 复制原有数组 在赋给原有的数组变量,改变地址指向
 *                 elementData = Arrays.copyOf(elementData,newCap);
 *             }
 *             // 将新元素添加到末尾
 *             // 多个线程来访问时: 多个线程同时调用add方法会出现越界异常，使用同步确保线程安全
 *             elementData[size++] = element;
 *
 * @author CodeYang
 * @version 2021/1/6 1:08
 */
public class P3多线程操作myArrayList实现同步Lock {

    public static void main(String[] args) {
        MyArrayList<Integer> list = new MyArrayList<>();

        /**
         * 创建六个线程来访问ArrAyList集合
         */
        for (int i = 0; i < 6; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (true){
                        list.add(1);

                    }
                }
            },"添加线程:"+(i+1)).start();
        }

        // 进入死循环证明成功


    }
}
